package com.it.smartoldb.common;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 响应码枚举
 */
@Getter
@AllArgsConstructor
public enum ResultCode {
    
    // 通用响应码
    SUCCESS(200, "操作成功"),
    ERROR(500, "操作失败"),
    NOT_FOUND(404, "资源不存在"),
    
    // 参数相关
    PARAM_ERROR(400, "参数错误"),
    PARAM_MISSING(400, "缺少必要参数"),
    PARAM_INVALID(400, "参数格式不正确"),
    
    // 认证相关
    UNAUTHORIZED(401, "未授权"),
    FORBIDDEN(403, "禁止访问"),
    TOKEN_INVALID(401, "Token无效"),
    TOKEN_EXPIRED(401, "Token已过期"),
    LOGIN_REQUIRED(401, "请先登录"),
    
    // 用户相关
    USER_NOT_FOUND(404, "用户不存在"),
    USER_DISABLED(403, "用户已被禁用"),
    USERNAME_EXISTS(409, "用户名已存在"),
    PASSWORD_ERROR(400, "密码错误"),
    OLD_PASSWORD_ERROR(400, "原密码错误"),
    
    // 老人信息相关
    ELDERLY_NOT_FOUND(404, "老人信息不存在"),
    ELDERLY_ID_CARD_EXISTS(409, "身份证号已存在"),
    
    // 健康记录相关
    HEALTH_RECORD_NOT_FOUND(404, "健康记录不存在"),
    HEALTH_RECORD_TYPE_INVALID(400, "健康记录类型无效"),
    
    // 预约相关
    APPOINTMENT_NOT_FOUND(404, "预约记录不存在"),
    APPOINTMENT_CONFLICT(409, "预约时间冲突"),
    APPOINTMENT_CANNOT_CANCEL(400, "预约无法取消"),
    SERVICE_TYPE_NOT_FOUND(404, "服务类型不存在"),
    
    // 员工相关
    STAFF_NOT_FOUND(404, "员工信息不存在"),
    STAFF_NUMBER_EXISTS(409, "工号已存在"),
    
    // 文件相关
    FILE_UPLOAD_ERROR(500, "文件上传失败"),
    FILE_TYPE_NOT_SUPPORTED(400, "文件类型不支持"),
    FILE_SIZE_EXCEEDED(400, "文件大小超出限制"),
    
    // 数据库相关
    DATABASE_ERROR(500, "数据库操作失败"),
    DATA_NOT_FOUND(404, "数据不存在"),
    DATA_ALREADY_EXISTS(409, "数据已存在"),
    
    // 业务相关
    BUSINESS_ERROR(500, "业务处理失败"),
    OPERATION_NOT_ALLOWED(403, "操作不被允许"),
    
    // 系统相关
    SYSTEM_ERROR(500, "系统错误"),
    NETWORK_ERROR(500, "网络异常"),
    TIMEOUT_ERROR(500, "请求超时");
    
    /**
     * 响应码
     */
    private final Integer code;
    
    /**
     * 响应消息
     */
    private final String message;
} 